// 用户pinia仓库
import { defineStore } from "pinia"
import { loginApi, logoutApi, userinfoApi } from "../api/modules/user"

// 定义pinia仓库
export const UserStore = defineStore('UserStore', {
	// 数据
	state: () => ({
		// 用户头像
		avatarUrl: uni.getStorageSync('USERINFO') || '',
		// token信息
		token:  uni.getStorageSync('TOKEN') || '',
		// 用户信息
		userinfo: {}
	}),
	// 函数
	actions: {
		// * 保存用户授权信息【头像】
		saveUserProFile(info) {
			this.avatarUrl = info
			uni.setStorageSync('USERINFO', info)
		},
		// * 用户登录
		async login(user) {
			// 1. 发起请求
			const { data } = await loginApi(user)
			// 2. 存储token数据
			this.token = data
			uni.setStorageSync('TOKEN', data)
			// 3. 拉取用户信息
			this.getUserinfo()
		},
		// * 获取用户信息
		async getUserinfo() {
			const { data } = await userinfoApi()
			this.userinfo = data
		},
		// * 用户注销
		async userLogout() {
			await logoutApi()
			this.clearUser()
		},
		// * 清理用户信息 / 登录状态
		clearUser() {
			uni.removeStorageSync('TOKEN')
			this.token = ''
			this.userinfo = {}
		}
	},
	// 计算属性
	getters: {}
})